<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition template="#{ConfiguracionBean.rutaContexto}resources/Plantillas/normal.xhtml"
                xmlns="http://www.w3.org/1999/xhtml"
                xmlns:h="http://java.sun.com/jsf/html"
                xmlns:ui="http://java.sun.com/jsf/facelets"
                xmlns:f="http://java.sun.com/jsf/core"
                xmlns:p="http://primefaces.org/ui"
                xmlns:fnc="http://yournamespace.com/fnc">

    <ui:define name="titulo">
        <h:outputText value="Numeración"/>
    </ui:define>

    <ui:define name="content">
        <h:panelGroup rendered="#{!ConfiguracionModulosBean.moduloNumeracion}">
            <h:outputText value="Este módulo está desactivado" style="color: red;"/>
        </h:panelGroup>
        <h:panelGroup rendered="#{ConfiguracionModulosBean.moduloNumeracion}">
            
            <p:panel header="Búsqueda" toggleable="true" toggleSpeed="100">
                <h:form id="frmNum">
                    <h:panelGrid id="pgNum" style="width:100%">
                        <h:panelGrid columns="2">

                            <h:outputText value="Operador" rendered="#{!NumeracionBean.matrizVisible}"/>
                            <h:panelGrid id="listaOperador" columns="2" cellspacing="0" cellpadding="0" rendered="#{!NumeracionBean.matrizVisible}">
                                <h:selectOneMenu value="#{NumeracionBean.operadorVO.emrCodigo}" >
                                    <f:selectItems value="#{NumeracionBean.listaOperador}" />
                                    <p:ajax update="listaOperador,pDescargar" global="false" listener="#{NumeracionBean.descargarConsultaAccion}"/>
                                </h:selectOneMenu>
                                <p:commandLink ajax="true" rendered="#{NumeracionBean.operadorVO.emrCodigo != -1}" update="listaOperador,pDescargar" global="false">
                                    <p:graphicImage value="#{ConfiguracionBean.rutaContexto}resources/images/borrar.png" style="border:0px"/>
                                    <f:setPropertyActionListener target="#{NumeracionBean.operadorVO.emrCodigo}" value="-1"/>
                                    <f:setPropertyActionListener target="#{NumeracionBean.descargarConsulta}" value="true"/>
                                </p:commandLink>
                            </h:panelGrid>

                            <h:outputText value="Departamento" rendered="#{!NumeracionBean.matrizVisible}"/>
                            <h:panelGrid id="listaDepartamento" columns="2" cellspacing="0" cellpadding="0" rendered="#{!NumeracionBean.matrizVisible}">
                                <h:selectOneMenu value="#{NumeracionBean.departamentoVO.codigoDepartamento}" >
                                    <f:selectItems value="#{NumeracionBean.listaDepartamento}" />
                                    <p:ajax update="listaDepartamento,listaMunicipio,listaNdc,pDescargar" listener="#{NumeracionBean.cambiarDepartamento}" />
                                </h:selectOneMenu>
                                <p:commandLink ajax="true" rendered="#{NumeracionBean.departamentoVO.codigoDepartamento != -1}" update="listaDepartamento,listaMunicipio,listaNdc,pDescargar" action="#{NumeracionBean.cambiarDepartamento}">
                                    <p:graphicImage value="#{ConfiguracionBean.rutaContexto}resources/images/borrar.png" style="border:0px"/>
                                    <f:setPropertyActionListener target="#{NumeracionBean.departamentoVO.codigoDepartamento}" value="-1" />
                                    <f:setPropertyActionListener target="#{NumeracionBean.municipioVO.codigoMunicipio}" value="-1" />
                                    <f:setPropertyActionListener target="#{NumeracionBean.descargarConsulta}" value="true"/>
                                </p:commandLink>
                            </h:panelGrid>

                            <h:outputText value="Municipio" rendered="#{!NumeracionBean.matrizVisible}"/>
                            <h:panelGrid id="listaMunicipio" columns="2" cellspacing="0" cellpadding="0" rendered="#{!NumeracionBean.matrizVisible}">
                                <h:selectOneMenu id="municipios" value="#{NumeracionBean.municipioVO.codigoMunicipio}" >
                                    <f:selectItems value="#{NumeracionBean.listaMunicipio}" />
                                    <p:ajax update="listaMunicipio,pDescargar" global="false" listener="#{NumeracionBean.descargarConsultaAccion}"/>
                                </h:selectOneMenu>
                                <p:commandLink ajax="true" rendered="#{NumeracionBean.municipioVO.codigoMunicipio != -1}" update="listaMunicipio,pDescargar" global="false">
                                    <p:graphicImage value="#{ConfiguracionBean.rutaContexto}resources/images/borrar.png" style="border:0px"/>
                                    <f:setPropertyActionListener target="#{NumeracionBean.municipioVO.codigoMunicipio}" value="-1"/>
                                    <f:setPropertyActionListener target="#{NumeracionBean.descargarConsulta}" value="true"/>
                                </p:commandLink>
                            </h:panelGrid>

                            <h:outputText value="Estado" rendered="#{!NumeracionBean.matrizVisible}"/>
                            <h:panelGrid id="listaEstado" columns="2" cellspacing="0" cellpadding="0" rendered="#{!NumeracionBean.matrizVisible}">
                                <h:selectOneMenu value="#{NumeracionBean.estadoVO.esnCodigo}" >
                                    <f:selectItems value="#{NumeracionBean.listaEstado}" />
                                    <p:ajax update="listaEstado,pDescargar" global="false" listener="#{NumeracionBean.descargarConsultaAccion}"/>
                                </h:selectOneMenu>
                                <p:commandLink ajax="true" rendered="#{NumeracionBean.estadoVO.esnCodigo != -1}" update="listaEstado,pDescargar" global="false">
                                    <p:graphicImage value="#{ConfiguracionBean.rutaContexto}resources/images/borrar.png" style="border:0px"/>
                                    <f:setPropertyActionListener target="#{NumeracionBean.estadoVO.esnCodigo}" value="-1"/>
                                    <f:setPropertyActionListener target="#{NumeracionBean.descargarConsulta}" value="true"/>
                                </p:commandLink>
                            </h:panelGrid>
                            
                            <h:outputText value="NDC" />
                            <h:panelGrid id="listaNdc" columns="1" cellspacing="0" cellpadding="0">
                                <h:selectOneMenu value="#{NumeracionBean.ndcVO.ndtNombre}" >
                                    <f:selectItems value="#{NumeracionBean.listaNDC}" />
                                    <p:ajax update="listaNdc,pDescargar" global="false" listener="#{NumeracionBean.descargarConsultaAccion}"/>
                                </h:selectOneMenu>
                            </h:panelGrid>
                            
                            <h:outputText value="Tipo numeración" rendered="#{!NumeracionBean.matrizVisible}"/>
                            <h:panelGrid id="listaTipoNumeracion" columns="2" cellspacing="0" cellpadding="0" rendered="#{!NumeracionBean.matrizVisible}">
                                <h:selectOneMenu value="#{NumeracionBean.tipoNdcVO.ntnCodigo}" >
                                    <f:selectItems value="#{NumeracionBean.listaTipoNdc}" />
                                    <p:ajax update="listaTipoNumeracion,pDescargar" global="false" listener="#{NumeracionBean.descargarConsultaAccion}"/>
                                </h:selectOneMenu>
                                <p:commandLink ajax="true" rendered="#{NumeracionBean.tipoNdcVO.ntnCodigo != -1}" update="listaTipoNumeracion,pDescargar" global="false">
                                    <p:graphicImage value="#{ConfiguracionBean.rutaContexto}resources/images/borrar.png" style="border:0px"/>
                                    <f:setPropertyActionListener target="#{NumeracionBean.tipoNdcVO.ntnCodigo}" value="-1"/>
                                    <f:setPropertyActionListener target="#{NumeracionBean.descargarConsulta}" value="true"/>
                                </p:commandLink>
                            </h:panelGrid>

                            <h:outputText value="Número inicio ( ≥ )"/>
                            <h:panelGrid columns="2" cellpadding="0" cellspacing="0">
                                <h:inputText id="numeroInicio" value="#{NumeracionBean.numInicio}" maxlength="7" size="7" validator="#{Validador.enteroMayorIgualCero}"/>
                                <p:message for="numeroInicio" />
                            </h:panelGrid>
                            <h:outputText value="Número Fin ( ≤ )"/>
                            <h:panelGrid columns="2" cellpadding="0" cellspacing="0">
                                <h:inputText id="numeroFin" value="#{NumeracionBean.numFin}" maxlength="7" size="7" validator="#{Validador.enteroMayorIgualCero}"/>
                                <p:message for="numeroFin" />
                            </h:panelGrid>

                            <h:outputText value=" "/>
                            <h:panelGrid columns="2" cellspacing="0" cellpadding="0">
                                <h:outputText value="Borrar todos los filtros &nbsp;" />
                                <p:commandLink ajax="true" update="frmNum" action="#{NumeracionBean.cambiarDepartamento}" >
                                    <p:graphicImage value="#{ConfiguracionBean.rutaContexto}resources/images/borrar.png" style="border:0px"/>
                                    <f:setPropertyActionListener target="#{NumeracionBean.operadorVO.emrCodigo}" value="-1"/>
                                    <f:setPropertyActionListener target="#{NumeracionBean.departamentoVO.codigoDepartamento}" value="-1"/>
                                    <f:setPropertyActionListener target="#{NumeracionBean.municipioVO.codigoMunicipio}" value="-1"/>
                                    <f:setPropertyActionListener target="#{NumeracionBean.estadoVO.esnCodigo}" value="-1"/>
                                    <f:setPropertyActionListener target="#{NumeracionBean.tipoNdcVO.ntnCodigo}" value="-1"/>
                                    <f:setPropertyActionListener target="#{NumeracionBean.numInicio}" value=""/>
                                    <f:setPropertyActionListener target="#{NumeracionBean.numFin}" value=""/>
                                    <f:setPropertyActionListener target="#{NumeracionBean.descargarConsulta}" value="true"/>
                                </p:commandLink>
                            </h:panelGrid>
                        </h:panelGrid>

                        <h:panelGrid columns="3" style="width:100%" columnClasses="tabla-accion,tabla-accion" >
                            <p:commandButton value="Consultar" actionListener="#{NumeracionBean.buscar}" ajax="true" update=":pgNumeracion,frmNum" rendered="#{!NumeracionBean.matrizVisible}">
                                <f:setPropertyActionListener target="#{NumeracionBean.selectedNumsAccion}" value="false"/>
                                <f:setPropertyActionListener target="#{NumeracionBean.mensajeMatriz}" value=""/>
                                <f:setPropertyActionListener target="#{NumeracionBean.descargarConsulta}" value="false"/>
                            </p:commandButton>
                            <p:commandButton value="Consultar" actionListener="#{NumeracionBean.matriz}" ajax="true" update="frmNum" rendered="#{NumeracionBean.matrizVisible}"/>
                            <p:commandLink value="Ver #{NumeracionBean.matrizVisible ? 'Lista' : 'Matriz'}" ajax="true" actionListener="#{NumeracionBean.verMatriz}" update=":frmNum:pgNum"/>

                            <h:panelGrid id="pDescargar" style="width: 100%;" cellpadding="0" cellspacing="0">
                                <h:panelGrid style="vertical-align: middle; margin-left: auto; margin-right: 0; font-size: 10px" columns="3">
                                    
                                    <h:panelGrid styleClass="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only #{NumeracionBean.descargarConsulta ? 'ui-state-disabled' : ''}" columns="2"
                                                 onmouseover="#{!NumeracionBean.descargarConsulta ? '$(this).toggleClass( \'ui-state-hover\', true);' : ''}"
                                                 onmouseout="#{!NumeracionBean.descargarConsulta ? '$(this).toggleClass( \'ui-state-hover\', false);' : ''}"
                                                 onclick="#{!NumeracionBean.descargarConsulta ? 'PrimeFaces.monitorDownload(start, stop);PrimeFaces.addSubmitParam(\'frmNum\',{\'frmNum:descargarCosulta\':\'frmNum:descargarCosulta\'}).submit(\'frmNum\');' : ''}">
                                        <p:commandLink id="descargarCosulta" actionListener="#{NumeracionBean.descargarConsultaCSV}" ajax="false" 
                                                       onclick="PrimeFaces.monitorDownload(start, stop)" disabled="#{NumeracionBean.descargarConsulta}">
                                            <p:graphicImage value="#{ConfiguracionBean.rutaContexto}resources/images/csv.png" style="border:0px" width="20"/>
                                            <p:fileDownload value="#{NumeracionBean.archivoCSV}" />
                                        </p:commandLink>
                                        <h:outputText value="Exportar &lt;br/&gt; consulta" escape="false" />
                                    </h:panelGrid>
                                    
                                    <h:panelGrid styleClass="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only #{!NumeracionBean.existeArchivoZIP ? 'ui-state-disabled' : ''}" columns="2" 
                                                 onmouseover="#{NumeracionBean.existeArchivoZIP ? '$(this).toggleClass( \'ui-state-hover\', true);' : ''}"
                                                 onmouseout="#{NumeracionBean.existeArchivoZIP ? '$(this).toggleClass( \'ui-state-hover\', false);' : ''}"
                                                 onclick="#{NumeracionBean.existeArchivoZIP ? 'exportarDialog.show();' : ''}">
                                            <p:graphicImage value="#{ConfiguracionBean.rutaContexto}resources/images/csv.png" style="border:0px;" width="20"/>
                                        <h:outputText value="Exportar mapa &lt;br/&gt; completo" escape="false"/>
                                        
                                    </h:panelGrid>
                                </h:panelGrid>
                                
                                <p:dialog widgetVar="exportarDialog" header="Descargar archivo" modal="true" resizable="false" draggable="false" closable="false">
                                    <h:panelGrid style="text-align: center;">
                                        <h:outputText value="El archivo fue generado en la siguiente fecha:"/>
                                        <h:outputText value="#{NumeracionBean.fechaArchivoZip}" style="font-weight: bold; color: red"/>
                                        <br/>
                                        <h:panelGrid columns="2" style="width: 100%">
                                            <p:commandButton value="Descargar" actionListener="#{NumeracionBean.exportarCSV}" ajax="false" 
                                                           onclick="exportarDialog.hide();PrimeFaces.monitorDownload(start, stop)">
                                                <p:fileDownload value="#{NumeracionBean.archivoZIP}" />
                                            </p:commandButton>
                                            <p:commandButton type="button" value="Cancelar" onclick="exportarDialog.hide();"/>
                                        </h:panelGrid>
                                    </h:panelGrid>
                                </p:dialog>
                                
                                <script type="text/javascript">  
                                    function start() { statusDialog.show(); }
                                    function stop() { statusDialog.hide(); }  
                                </script>
                            </h:panelGrid>
                                
                        </h:panelGrid>

                        <h:panelGrid id="mensajeMatriz" >
                            <h:panelGrid styleClass="#{NumeracionBean.mensajeMatriz != '' ? 'ui-message-error ui-widget ui-corner-all' : ''} " columns="2" cellspacing="0" cellpadding="0">
                                <h:panelGrid styleClass="ui-message-error-icon" rendered="#{NumeracionBean.mensajeMatriz != ''}"/>
                                <h:outputText value="#{NumeracionBean.mensajeMatriz}" escape="false" styleClass="ui-message-error-detail" rendered="#{NumeracionBean.mensajeMatriz != ''}"/>
                            </h:panelGrid>
                        </h:panelGrid>
                    </h:panelGrid>
                </h:form>
            </p:panel>
            
            <h:panelGroup id="contenido">
                <h:panelGroup rendered="#{!NumeracionBean.matrizVisible}">
                    <ui:include src="#{ConfiguracionBean.rutaContexto}numeracion-lista.xhtml"/>
                </h:panelGroup>
                <h:panelGroup rendered="#{NumeracionBean.matrizVisible}">
                    <ui:include src="#{ConfiguracionBean.rutaContexto}numeracion-matriz.xhtml"/>
                </h:panelGroup>
            </h:panelGroup>
            
            <h:panelGroup rendered="#{UserBean.permisos.numeracion or (UserBean.liberar or UserBean.reservar)}">
                <ui:include src="#{ConfiguracionBean.rutaContexto}usuarios/detalleNumeracion.xhtml"/>
            </h:panelGroup>
            
        </h:panelGroup>
            
    </ui:define>
</ui:composition>